package com.bf.electroplating.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bf.electroplating.pojo.dto.tank.ElectroplatingTankDTO;
import com.bf.electroplating.pojo.vo.WorkshopTankDataVO;
import com.bf.electroplating.pojo.vo.tank.ElectroplatingTankVO;
import com.bf.electroplating.pojo.vo.tank.WorkshopTankAreaSummaryVO;

import java.util.List;

public interface ElectroplatingTankService {

    /**
     * 分页获取镀槽列表
     * @param dto 查询条件
     * @return 分页结果
     */
    Page<ElectroplatingTankVO> getTankList(ElectroplatingTankDTO dto);

    /**
     * 根据ID获取镀槽详情
     * @param id 镀槽ID
     * @return 镀槽详情
     */
    ElectroplatingTankVO getTankById(Long id);

    /**
     * 新增镀槽
     * @param vo 镀槽信息
     * @return 是否成功
     */
    Boolean saveTank(ElectroplatingTankVO vo);

    /**
     * 修改镀槽
     * @param vo 镀槽信息
     * @return 是否成功
     */
    Boolean updateTank(ElectroplatingTankVO vo);

    /**
     * 删除镀槽
     * @param id 镀槽ID
     * @return 是否成功
     */
    Boolean deleteTank(Long id);

    /**
     * 批量删除镀槽
     * @param ids 镀槽ID列表
     * @return 是否成功
     */
    Boolean batchDeleteTank(List<String> ids);

    /**
     * 根据车间ID获取镀槽列表
     * @param workshopId 车间ID
     * @return 镀槽列表
     */
    List<ElectroplatingTankVO> getTanksByWorkshopId(Long workshopId);

    /**
     * 获取车间镀槽数据
     * @param workshopId 车间ID
     * @return 车间镀槽数据
     */
    WorkshopTankDataVO getWorkshopTankData(Long workshopId);

    /**
     * 获取车间镀槽面积汇总
     * @param workshopId 车间ID
     * @return 车间镀槽面积汇总
     */
    WorkshopTankAreaSummaryVO getWorkshopTankAreaSummary(Long workshopId);
}
